js逻辑与、或、非运算规则

与&&和||不同,!操作符的行为与C、Java等语言是一致的,只返回boolean值(true或false)。

针对于!运算,0以及null、""(空字符串)、NaN、undefined,空对象算是做false,加上!将返回true
console.log(!0);    //null
console.log(!null);//null
console.log(NaN); //null
console.log(!"");
//null
console.log(!undefined);/null


与C、Java等语言一样,JavaScript中可以用&&、||、!三个逻辑判断符来对boolean值进行逻辑判断。
与C、Java不同的是,JavaScript中逻辑与(&&)和逻辑或(||)操作符可以应用在任何值上,而操作结束后返回的也不一定是boolean值。

JavaScript中&&的处理规则是这样的: 

1.判断第一个值是否为False。如果为False,则直接返回第一个值。(0,null,空字符串,NaN,undefined,空对象皆可转换为false布尔类型)
2.如果第一个值为True,则直接返回第二个值;

var o = {x:1, y:2};
console.log(o && o.y);//2
console.log(null && x);//null

var o = {x:1, y:2};
console.log(o && o.y);//2
console.log(null && x);//null

逻辑或||的处理规则 

与&&操作符类似,JavaScript中||的处理规则是这样的:
 

1.判断第一个值是否为True。如果为True,则直接返回第一个值。
2.如果第一个值为False,则直接返回第二个值。(0,null,空字符串,NaN,undefined,空对象皆可转换为false布尔类型)
 

||操作符的这种行为使得JavaScript中一些快捷写法成为现实: 
 var a = null;
 var b = 42;
 var v = a || b || 100;
 console.log(v);//42

 var b = null;
 var v = a || b || 100;
 console.log(v);//100


 function test(p){
   p = p || {};//if p is not passed, make it an empty object.
 }


一个特殊的错误案例,判断参数中少些了一个等号,导致将2 && true的最终结果赋值给了a
alert(a=2 && true);
--------------------- 
作者:woi123 
来源:CSDN 
原文:https://blog.csdn.net/woi123/article/details/84820008 
版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值